.\" Copyright (C) 1994  Jochen Hein (Hein@Student.TU-Clausthal.de)
.\"
.\" %%%LICENSE_START(GPLv2+_SW_3_PARA)
.\" This program is free software; you can redistribute it and/or modify
.\" it under the terms of the GNU General Public License as published by
.\" the Free Software Foundation; either version 2 of the License, or
.\" (at your option) any later version.
.\"
.\" This program is distributed in the hope that it will be useful,
.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
.\" GNU General Public License for more details.
.\"
.\" You should have received a copy of the GNU General Public
.\" License along with this manual; if not, see
.\" <http://www.gnu.org/licenses/>.
.\" %%%LICENSE_END
.\"
.TH CHARMAP 5 2020-06-09 "GNU" "Linux Programmer's Manual"
.SH NAME
charmap \- character set description file
.SH DESCRIPTION
A character set description (charmap) defines all available characters
and their encodings in a character set.
.BR localedef (1)
can use charmaps to create locale variants for different character sets.
.SS Syntax
The charmap file starts with a header that may consist of the
following keywords:
.TP
.RI < code_set_name >
is followed by the name of the character map.
.TP
.RI < comment_char >
is followed by a character that will be used as the comment character
for the rest of the file.
It defaults to the number sign (#).
.TP
.RI < escape_char >
is followed by a character that should be used as the escape character
for the rest of the file to mark characters that should be interpreted
in a special way.
It defaults to the backslash (\e).
.TP
.RI < mb_cur_max >
is followed by the maximum number of bytes for a character.
The default value is 1.
.TP
.RI < mb_cur_min >
is followed by the minimum number of bytes for a character.
This value must be less than or equal than
.RI < mb_cur_max >.
If not specified, it defaults to
.RI < mb_cur_max >.
.PP
The character set definition section starts with the keyword
.I CHARMAP
in the first column.
.PP
The following lines may have one of the two following forms to
define the character set:
.TP
.RI < character >\  byte-sequence\ comment
This form defines exactly one character and its byte sequence,
.I comment
being optional.
.TP
.RI < character >..< character >\  byte-sequence\ comment
This form defines a character range and its byte sequence,
.I comment
being optional.
.PP
The character set definition section ends with the string
.IR "END CHARMAP" .
.PP
The character set definition section may optionally be followed by a
section to define widths of characters.
.PP
The
.I WIDTH_DEFAULT
keyword can be used to define the default width for all characters
not explicitly listed.
The default character width is 1.
.PP
The width section for individual characters starts with the keyword
.I WIDTH
in the first column.
.PP
The following lines may have one of the two following forms to
define the widths of the characters:
.TP
.RI < character >\  width
This form defines the width of exactly one character.
.TP
.RI < character >...< character >\  width
This form defines the width for all the characters in the range.
.PP
The width definition section ends with the string
.IR "END WIDTH" .
.SH FILES
.TP
.I /usr/share/i18n/charmaps
Usual default character map path.
.SH CONFORMING TO
POSIX.2.
.SH EXAMPLES
The Euro sign is defined as follows in the
.I UTF\-8
charmap:
.PP
.nf
<U20AC>     /xe2/x82/xac EURO SIGN
.fi
.SH SEE ALSO
.BR iconv (1),
.BR locale (1),
.BR localedef (1),
.BR locale (5),
.BR charsets (7)
.SH COLOPHON
This page is part of release 5.13 of the Linux
.I man-pages
project.
A description of the project,
information about reporting bugs,
and the latest version of this page,
can be found at
\%https://www.kernel.org/doc/man\-pages/.
